package sss;

import java.util.Scanner;

/**
 * @author VernHe
 * @date 2021年08月12日 13:26
 */
public class Day_01_2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        // 接收行列
        int rows = input.nextInt();
        int cols = input.nextInt();
        // 输入的数组
        int[][] data = new int[rows][cols];
        // 接收具体数据
        for (int row = 0; row < rows; row++) {
            for (int col = 0; col < cols; col++) {
                data[row][col] = input.nextInt();
            }
        }
        // 旋转数组
        solution(rows,cols,data);
    }

    /**
     * 样例输入
     * 3 4
     * 【-1】 3 6 3
     * 7 7 9 1
     * [10] 3 4 6
     * 样例输出
     * [10] 7 【-1】
     * 3 7 3
     * 4 9 6
     * 6 1 3
     *
     * 第 i j 位置的数据旋转后位置的变化规律，列变行，行号变化规律
     *  0行 -> 2列  1行 -> 1列  2行 -> 0列
     *  rows - 1 = 2
     *  data_old[row_old][col_old] => data_new[col_old][2 - row_old]
     *  col_new = 2 - row_old  --->  row_old =  2 - col_new
     *  data_new[row_new][col_new] = data_old[row_old][row_old]
     *  0 2  -> 2 - 2 0 -> 0 0
     *  0 0  -> 2 - 0 0 -> 2 0
     */
    private static void solution(int rows, int cols, int[][] data) {
        // 寻找规律直接打印
        int maxRowIndex = rows - 1;
        for (int i = 0; i < cols; i++) {
            for (int j = 0; j < rows; j++) {
                System.out.printf(data[maxRowIndex - j][i] + ((j == rows - 1) ? "" :" "));
            }
            System.out.println();
        }
    }
}
